home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / xalan.jar / org / apache / xalan / xpath / FuncKey.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-04-12  |  2.4 KB  |  56 lines

  1. package org.apache.xalan.xpath;
  2.  
  3. import java.util.Hashtable;
  4. import java.util.Vector;
  5. import org.apache.xalan.xpath.xml.XMLParserLiaisonDefault;
  6. import org.w3c.dom.Document;
  7. import org.w3c.dom.Node;
  8. import org.w3c.dom.NodeList;
  9. import org.xml.sax.SAXException;
  10.  
  11. public class FuncKey extends Function {
  12.    public XObject execute(XPath var1, XPathSupport var2, Node var3, int var4, Vector var5) throws SAXException {
  13.       Object var6 = null;
  14.       Document var7 = var3.getNodeType() == 9 ? (Document)var3 : var3.getOwnerDocument();
  15.       if (var7 == null) {
  16.          var1.error(var3, 4);
  17.       }
  18.  
  19.       if (var5.size() != 2) {
  20.          var1.error(45);
  21.       }
  22.  
  23.       String var8 = ((XObject)var5.elementAt(0)).str();
  24.       XObject var9 = (XObject)var5.elementAt(1);
  25.       boolean var10 = var9.getType() == 4;
  26.       MutableNodeListImpl var11 = new MutableNodeListImpl();
  27.       XNodeSet var17 = new XNodeSet(var11);
  28.       if (var10) {
  29.          int var12 = var9.nodeset().getLength();
  30.          Hashtable var13 = var12 > 1 ? new Hashtable() : null;
  31.  
  32.          for(int var14 = 0; var14 < var12; ++var14) {
  33.             String var15 = XMLParserLiaisonDefault.getNodeData(var9.nodeset().item(var14));
  34.             if (var15 != null) {
  35.                if (var12 > 1) {
  36.                   if (var13.get(var15) != null) {
  37.                      continue;
  38.                   }
  39.  
  40.                   var13.put(var15, var1.m_currentPattern);
  41.                }
  42.  
  43.                NodeList var16 = var2.getNodeSetByKey(var7, var8, var15, var2.getNamespaceContext());
  44.                var11.addNodesInDocOrder(var16, var2);
  45.             }
  46.          }
  47.       } else {
  48.          String var18 = var9.str();
  49.          NodeList var19 = var2.getNodeSetByKey(var7, var8, var18, var2.getNamespaceContext());
  50.          var11.addNodesInDocOrder(var19, var2);
  51.       }
  52.  
  53.       return var17;
  54.    }
  55. }
  56.